package org.azj.dbOperatorComponent;
import java.util.HashMap;


/**
 * 此接口展示了可以被展示在界面上的表的方法,
 * 该表只能够做查询操作，无法做
 */
public abstract class AbsComposibleTable extends DbQueryOperation
{
	// 增加组合表与条件
	// 对于第一个子表，JoinType和onFilter将会被忽略
	// 例如，为了实现
	// s.tA inner join s.tB on s.tA.xy = s.tB.xy left outer join s.tC on s.tA.yy = s.tC.yy
	// 可以这样调用函数
	// addComponentTable(s.tA, JoinType.NOT_KNOWN, "");
	// addComponentTable(s.tB, JoinType.INNER_JOIN, "s.tA.xy = s.tB.xy");
	// addComponentTable(s.tC, JoinType.LEFT_OUTER_JOIN, "s.tA.yy = s.tC.yy");
	abstract void addComponentTable(
			IDbQueryOperation componentTable,
			JoinType joinType, String onFilter);
	
	//获取此需要展示的表的组成子表信息
    //组成此展示用的表的子表信息，实现了IOperableTable接口
	//表名是schema.table的全名
	abstract HashMap<String, IBasicTableOperation> getComponentTables();
	
    // 获取拼接时的过滤条件。	
	// 还是上面的例子，它将返回
	// s.tA inner join s.tB on s.tA.xy = s.tB.xy left outer join s.tC on s.tA.yy = s.tC.yy
	abstract String getJoinOnFilters();
}
